package com.cskaoyan.mapper;

import com.cskaoyan.bean.Employee;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EmployeeMapper {

    Employee selectEmployeeById(@Param("id") Integer id);


    // 传入一个薪水x，
    // 假如x< 30000, 那么查询薪水小于30000的员工
    // 假如x大于等于30000，那么查询薪水大于等于三万的员工
    List<Employee> selectEmployeeListBySalary(@Param("salary") Float salary);


    // 通过employee 这个对象，传递条件，然后查询对应的employee
    // 传入的这个employee里面，有一些字段可能为空，有一些字段不为空
    List<Employee> selectEmployeeListByEmployeeSelective(@Param("employee") Employee employee);


    // 传入一个薪水x，
    // 假如x< 30000, 那么查询薪水小于30000的员工
    // 假如x大于等于30000，那么查询薪水大于等于三万的员工
    List<Employee> selectEmployeeListBySalaryUseChooseWhen(@Param("salary") Float salary);

    // 动态的根据id去修改employee
    int updateEmployeeByIdSelective(Employee employee);


    // 动态的根据id去修改employee
    int updateEmployeeByIdSelectiveUseSet(Employee employee);

    // 场景1 in查询 - list 加注解 collection = '注解里面的值'
    List<Employee> selectEmployeeListByIds(@Param("ids") List<Integer> ids);

    // in查询 - array 加注解 collection = '注解里面的值'
    List<Employee> selectEmployeeListByIdArray(@Param("idArray") int[] idArray);

    // in查询 - list 不加注解 collection = 'collection | list'
    List<Employee> selectEmployeeListByIds2(List<Integer> ids);

    // in查询 - array 不加注解  collection = 'array'
    List<Employee> selectEmployeeListByIdArray2(int[] idArray);


    // 插入list or 数组
    int insertEmployeeList(@Param("employeeList") List<Employee> employeeList);

    int insertEmployeeArray(@Param("employeeArray") Employee[] employeeArray);

    // 插入一个employee，并且返回自增的主键
    int insertEmployee(@Param("employee") Employee employee);


    // 插入一个employee，并且返回自增的主键
    int insertEmployeeUseGeneratedKeys(@Param("employee") Employee employee);

}

